package q669_trimBST;

import CommonClass.Common.TreeNode;

public class Solution_1 {
    /*
    此题仍然与701和450的递归解法非常类似
    需要结合搜索二叉树的特点来进行操作
    都是按照判断 左 - 右 - 中 来进行对应操作
     */
    public TreeNode trimBST(TreeNode root, int low, int high) {

        if (root == null) {
            return null;
        }
        // 如果root值大于最大值 则往左搜索找节点要去除的位置
        if (root.val > high) {
            return trimBST(root.left, low, high);
        }
        // 小于最小值则往右
        if (root.val < low) {
            return trimBST(root.right, low, high);
        }

        // 否则落在范围内，则左右都需要修改
        root.left = trimBST(root.left, low, high);
        root.right = trimBST(root.right, low, high);

        return root;
    }
}
